<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
// 声明一个构造函数
    function Str(uname,age,gender){
      this.uname = uname
      this.age = age
      this.gender = gender
    }
// 通过new关键词，让Str构造函数指向实例化对象black
    const black = new Str('小黑子',18,'男')

// 判断实例化对象的原型对象等不等于构造函数的原型对象 
console.log(black.__proto__ === Str.prototype);

// 判断构造函数的对象原型等不等于原型对象
console.log(Str.prototype.constructor === Str);

// 构造函数的对象原型指回构造函数的原型对象是否相等
console.log(Str.prototype === Str.prototype);

// Str的原型对象Str.prototype本身是个数组，所有它的__proto__指向Object对象
console.log(black.__proto__.__proto__ === Object.prototype);

//Object.prototype通过constructor判断是否相等于Object内置构造函数
console.log(Object.prototype.constructor === Object);

// Object内置构造函数指回Object原型对象是否相等
console.log(Object.prototype === Object.prototype);

// Object.prototype也是一个数组，但是该数组__.proto__再指下去的话得到的是null
console.log(black.__proto__.__proto__.__proto__);


  </script>
</body>
</html>